package com.jr.mapper;

import com.jr.pojo.ParkingSpaces;
import com.jr.vo.ParkingSpacesParkingRecordsVehicles;
import org.apache.ibatis.annotations.MapKey;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 停车场相关的Mapper接口
 * 用于处理车位、停车记录和车辆的多表查询
 */
@Mapper
public interface ParkingMapper {

    /**
     * 模糊分页多表查询停车场信息
     * @param code 车位编号（模糊查询）
     * @param status 车位状态（模糊查询）
     * @param description 区域描述（模糊查询，通过code的第一个字符生成）
     * @return 查询结果列表
     */
    List<ParkingSpacesParkingRecordsVehicles> findParkingInfoByPage(
            @Param("code") String code,
            @Param("status") Integer status,
            @Param("description") String description
    );
    
    /**
     * 查询parking_spaces表的全部数据
     * @return 所有停车位信息列表
     */
    List<ParkingSpaces> findAllParkingSpaces();
    
    /**
     * 查询status分别为0,1,3的数据的总数量
     * @return 各状态数量的Map，key为status值，value为数量
     */
    @MapKey("status")
    Map<Integer, Integer> findStatusCount();
}